跳到主要内容

88 合并两个有序数组

https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnumcr/

https://leetcode.cn/problems/merge-sorted-array/description/

cost: 18m06s

class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (n == 0) {
return;
}
int i = m + n - 1;
int j = m - 1, k = n - 1;
while (j >= 0 && k >= 0) {
if (nums1[j] > nums2[k]) {
nums1[i] = nums1[j];
i--;
j--;
} else {
nums1[i] = nums2[k];
i--;
k--;
}
}
if (k >= 0) {
std::copy(nums2.begin(), nums2.begin() + k + 1, nums1.begin());
}
}
};
  • 时间复杂度:O(m+n)
  • 空间复杂度:O(1)